package com.seleniti.enpareja.controller.ui.view;

import org.ioc.commons.flowcontrol.actioncontroller.IsExternalAction;
import org.ioc.commons.flowcontrol.eventbus.IsEvent;
import org.ioc.commons.flowcontrol.operationmanager.IsOperation;
import org.ioc.commons.ui.HasEnabled;
import org.ioc.commons.ui.HasValue;
import org.ioc.commons.ui.HasVisibility;
import org.ioc.commons.ui.IsView;
import org.ioc.commons.ui.IsViewPresenter;

public interface MainView extends EnParejaView<MainView.Event, MainView.Operation, MainView.Action>, HasEnabled {
	
	@interface Fires {
		MainView.Event[] value();
	}

	@interface Invokes {
		MainView.Action[] value();
	}

	@interface Performs {
		MainView.Operation[] value();
	}

	public enum Event implements IsEvent {
	}

	public enum Operation implements IsOperation {
		GettingData
	}

	public enum Action implements IsExternalAction {
	}

	public interface Presenter extends IsViewPresenter {

		void onGoSettings();

		void onGoToShoppingListView();

		void onGoToHomeTasksView();

		void onGoToMealsView();

		void onGoToWorkShiftsView();

		void onGoToSharedCostView();

		void onGoToPendingShoppingView();
		
	}

	HasVisibility configUserSuggestionPanelVisibility();
	
	HasValue<Integer> pendingShoppingList();

	HasValue<Integer> pendingHomeTasks();

	HasValue<Integer> pendingProducts();
}

